class Solution {
    //baoli
//    public int lengthOfLongestSubstring(String s) {
//        int ans = 0;
//        int n = s.length();
//        for (int i = 0; i < n; i++) {
//            for (int j = i + 1; j <= n; j++) {
//                if (allUnique(s, i, j)) {
//                    ans = Math.max(ans,j-i);
//                }
//            }
//        }
//        return ans;
//
//    }
//
//    private boolean allUnique(String s, int start, int end) {
//        HashSet<Character> hs = new HashSet<Character>();
//        for (int i = start; i < end; i++) {
//            if (hs.contains(s.charAt(i))){
//                return false;
//            }else{
//                hs.add(s.charAt(i));
//            }
//        }
//        return true;
//    }
//    public int lengthOfLongestSubstring(String s) {
//        int i = 0;
//        int j = 0;
//        int ans = 0;
//        int n = s.length();
////        HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
////        for (; j < n; j++) {
////            if (hm.containsKey(s.charAt(j))) {
////                i = Math.max(i, hm.get(s.charAt(j)));
////            }
////            ans = Math.max(ans, j - i + 1);
////            hm.put(s.charAt(j), j + 1);
////        }
//        int[] arr = new int[128];
//        for(;j<n;j++){
//            if(arr[s.charAt(j)]!=0){
//                i=Math.max(i,arr[s.charAt(j)]);
//            }
//            ans=Math.max(ans,j-i+1);
//            arr[s.charAt(j)]=j+1;
//        }
//        return ans;
//    }
//
    public double findMedianSortedArrays(int[] arr1, int[] arr2) {
        int[] ret = new int[arr1.length + arr2.length];
        //归并排序
        merge(ret, arr1, arr1.length, arr2, arr2.length);
        int len = ret.length;
        if (len % 2 != 0) {
            return 1.0 * ret[len / 2];
        } else {
            return (ret[len / 2] + ret[len / 2 - 1]) / 2.0;
        }
    }

    public void merge(int[] ret, int[] arr1, int len1, int[] arr2, int len2) {
        int i = 0;
        int j = 0;
        int k = 0;
        while (i < len1 && j < len2) {
            ret[k++] = arr1[i] < arr2[j] ? arr1[i++] : arr2[j++];
        }
        while (i < len1) {
            ret[k++] = arr1[i++];
        }
        while (j < len2) {
            ret[k++] = arr2[j++];
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] arr1={};
        int[] arr2={2,3};
        System.out.println(solution.findMedianSortedArrays(arr1, arr2));
//        System.out.println(solution.lengthOfLongestSubstring("dvdf"));
    }
}